package com.example.sid.ui.fragments.login

import android.widget.Button
import androidx.fragment.app.Fragment
import com.example.sid.R
import com.example.sid.data.ValueRamStorage
import com.example.sid.how_to_use.AsyncSIDFacade
import com.example.sid.utils.Utils
import kotlinx.coroutines.launch
import sberid.sdk.init.SID

/**
 * Фрагмент демонстрирующий как можно с помощью создателя ссылок залогиниться через SID.
 * [SID.Login.loginWithID] используется только в связке с [SID.Login.createUriForLogin]
 */
class LoginWithIDFragment : Fragment(R.layout.fragment_login_with_id) {

	private val sidLogin: Button get() = requireView().findViewById(R.id.sid_login_button)
	override fun onStart() {
		super.onStart()
		sidLogin.setOnClickListener {
			Utils.ioScope.launch {
				val uri = AsyncSIDFacade.createUriForLogin(
					clientId = ValueRamStorage.partnerID,
					scope = ValueRamStorage.partnerScope,
					state = ValueRamStorage.partnerState,
					nonce = ValueRamStorage.partnerNonce,
					redirectUri = ValueRamStorage.partnerUrlRedirect,
					customTabRedirectUri = null,
					codeChallenge = null,
					codeChallengeMethod = null,
					uriScheme = null,
					loginHint = null
				) ?: return@launch
				AsyncSIDFacade.loginWithID(requireActivity(), uri)
			}
		}
	}

}